Exception Level
Exception Level (EL)
1. 개요
Exception Level (EL)은 ARMv8-A 아키텍처 이후 도입된 권한 관리 모델로, 프로세서가 실행 중인 소프트웨어의 권한 수준을 계층적으로 구분하여 시스템의 안정성과 보안을 보장하는 메커니즘이다. 이는 기존의 프로세서 모드(Processor Mode) 개념을 확장하여, 하드웨어 수준에서 실행 주체(애플리케이션, OS, 하이퍼바이저, 보안 모니터) 간의 자원 접근 권한을 엄격히 분리하고 제어하는 역할을 수행한다.
2. EL 계층 구조 및 역할
ARM 아키텍처는 숫자가 높을수록 더 높은 권한을 가지는 4단계의 계층 구조를 가진다. 각 레벨은 특정 역할의 소프트웨어를 실행하기 위해 설계되었으며, 상위 레벨은 하위 레벨의 모든 자원에 접근할 수 있지만 하위 레벨은 상위 레벨의 자원에 직접 접근할 수 없다.
| EL 레벨 | 명칭 | 실행 주체 | 권한 범위 및 주요 역할 |
|---|---|---|---|
| EL0 | User | 사용자 애플리케이션 | 가장 낮은 권한. 제한된 메모리 영역 및 시스템 레지스터에만 접근 가능 |
| EL1 | Kernel | 운영체제(OS) 커널 | 특권 권한. 가상 메모리 관리(MMU), 인터럽트 처리, 하드웨어 드라이버 제어 |
| EL2 | Hypervisor | 하이퍼바이저 | 가상화 관리. 여러 개의 Guest OS(EL1)를 격리하고 하드웨어 자원을 분배 |
| EL3 | Secure Monitor | 보안 모니터 / 펌웨어 | 최고 권한. 보안 세계(Secure World)와 비보안 세계(Non-secure World) 전환 제어 |
3. 동작 원리 및 전환 메커니즘
권한 레벨의 전환은 Exception(예외) 발생을 통해 이루어진다. 예외란 프로세서의 정상적인 명령어 흐름을 중단시키고 특정 이벤트(인터럽트, 시스템 콜, 오류 등)를 처리하기 위해 상위 권한 레벨로 진입하는 과정을 의미한다.
3.1 전환 흐름
- 상향 이동 (Trap/Call): 하위 EL에서 상위 EL로 이동하는 과정이다. 하드웨어 예외(Interrupt)가 발생하거나, 소프트웨어가 명시적으로 상위 레벨의 서비스를 요청하는 명령어를 실행할 때 발생한다.
- 하향 이동 (Return): 상위 EL에서 처리를 완료한 후, 이전에 실행 중이던 하위 EL의 상태로 복귀하는 과정이다. 이때
ERET(Exception Return) 명령어를 사용하여 복귀한다. - 동일 레벨 유지 (Same-level): 현재 실행 중인 EL에서 처리 가능한 예외가 발생한 경우, 권한 레벨의 변경 없이 해당 레벨의 예외 벡터로 진입한다. (예: EL1 커널 내에서 발생한 페이지 폴트 처리)
[EL 전환 흐름도]
EL0 (User) $\xrightarrow{SVC}$ EL1 (Kernel) $\xrightarrow{HVC}$ EL2 (Hypervisor) $\xrightarrow{SMC}$ EL3 (Secure Monitor)
EL0 $\xleftarrow{ERET}$ EL1 $\xleftarrow{ERET}$ EL2 $\xleftarrow{ERET}$ EL3
3.2 권한 전환 명령어 예시
소프트웨어가 의도적으로 상위 권한으로 진입하기 위해 사용하는 특수 명령어는 다음과 같다.
SVC(Supervisor Call): EL0 → EL1. 사용자 앱이 OS 커널에 시스템 콜(System Call)을 요청할 때 사용한다.HVC(Hypervisor Call): EL1 → EL2. Guest OS가 하이퍼바이저에게 가상화 관련 서비스를 요청할 때 사용한다.SMC(Secure Monitor Call): EL1/EL2 → EL3. 비보안 세계의 OS가 보안 세계(Secure World)의 서비스(예: TrustZone 기반 인증)를 요청할 때 사용한다.
4. 레벨별 주요 기능 및 제어
각 EL은 접근 가능한 시스템 레지스터와 제어 권한이 엄격히 구분되어 있다.
4.1 시스템 레지스터 접근
ARM은 레지스터 이름에 EL 번호를 붙여 권한을 구분한다. 하위 레벨에서 상위 레벨의 레지스터를 읽거나 쓰려고 시도하면 Undefined Instruction Exception이 발생한다.
[EL별 접근 가능 레지스터 예시]
| 접근 가능 EL | 레지스터 예시 | 설명 |
| :--- | :--- | :--- |
| EL0 | TPIDR_EL0 | 사용자 스레드 ID 레지스터 |
| EL1 이상 | SCTLR_EL1, TTBR0_EL1 | 시스템 제어, 페이지 테이블 베이스 레지스터 |
| EL2 이상 | SCTLR_EL2, VBAR_EL2 | 하이퍼바이저 제어, 예외 벡터 베이스 레지스터 |
| EL3 이상 | SCTLR_EL3, SCR_EL3 | 보안 설정 및 시스템 전체 제어 레지스터 |
4.2 EL 전환 시 사용되는 핵심 레지스터
예외 발생 시 현재 상태를 저장하고 복구하기 위해 특수 레지스터가 사용된다. 각 EL마다 전용 SPSR과 ELR이 세트로 존재하며, 상위 EL로 진입할 때 하위 EL의 상태가 해당 상위 EL의 레지스터에 저장된다. (예: EL1에서 EL2로 진입 시, EL1의 상태는 SPSR_EL2와 ELR_EL2에 저장됨)
- SPSR (Saved Program Status Register): 예외 발생 직전의 프로세서 상태(PSTATE)를 저장하여,
ERET시 원래 상태로 복구할 수 있게 한다. - ELR (Exception Link Register): 예외가 발생한 지점의 명령어 주소를 저장하여, 처리 완료 후 복귀할 위치를 기록한다.
- ESR (Exception Syndrome Register): 어떤 종류의 예외가 발생했는지(원인)에 대한 상세 정보를 담고 있다.
5. 가상화와 보안 모델 (EL2 & EL3)
5.1 가상화 (EL2)
EL2는 하이퍼바이저(Hypervisor)를 위한 계층이다. EL2는 'Stage 2 Translation'이라는 추가적인 메모리 변환 단계를 통해 Guest OS(EL1)가 사용하는 가상 주소를 실제 물리 주소로 한 번 더 매핑한다. 이를 통해 여러 OS가 서로의 메모리 영역을 침범하지 않고 독립적으로 실행될 수 있는 격리 환경을 제공한다.
5.2 보안 모델: TrustZone (EL3)
ARM의 TrustZone 기술은 프로세서를 Secure World(보안 세계)와 Non-secure World(비보안 세계)로 논리적으로 분리한다.
[World 구분 도식도]
[ Non-secure World ] [ Secure World ]
EL2 (Hypervisor) <---> EL2 (Secure Hypervisor)*
EL1 (Guest OS) <---> EL1 (Secure Kernel)
EL0 (Application) <---> EL0 (Secure App)
^ ^
| [ EL3 ] |
+---- (Secure Monitor) ---+
- Non-secure World: 일반적인 OS(Android, Linux 등)와 앱이 실행되는 영역 (EL0 $\rightarrow$ EL2).
- Secure World: 보안 OS(TEE, Trusted Execution Environment)가 실행되는 영역. 보안 세계 내에서도 비보안 세계와 유사하게 EL0(Secure User), EL1(Secure Kernel) 등의 계층이 존재할 수 있다.
- EL3 (Secure Monitor): 두 세계 사이의 게이트웨이 역할을 하며, 보안 상태 전환을 관리하고 시스템 초기화를 담당하는 최고 권한 레벨이다.
6. ARMv8-A와 v9-A의 차이점
ARMv9-A 아키텍처는 v8-A의 EL 구조를 계승하면서도 보안과 가상화 기능을 대폭 강화하였다.
| 구분 | ARMv8-A | ARMv9-A |
|---|---|---|
| 보안 메커니즘 | TrustZone 기반의 이분법적 분리 | Realm Management Extension (RME) 도입 |
| 격리 수준 | Secure / Non-secure 2단계 분리 | Realm(영역) 개념 도입으로 동적 격리 강화 |
| 메모리 보호 | 기본적인 MMU 및 Stage 2 변환 | Confidential Compute Architecture (CCA) 지원 |
| 특징 | 정적인 보안 영역 설정 | 가상 머신별로 독립적인 보안 영역(Realm) 생성 가능 |
7. 요약 및 비교
전체적인 권한 위계와 자원 제어 범위를 요약하면 다음과 같다.
| EL | 권한 수준 | 주요 제어 자원 | 접근 가능 범위 | 전환 명령어 |
|---|---|---|---|---|
| EL0 | 최하 | 사용자 데이터, 스택 | 자신의 가상 주소 공간 | SVC $\rightarrow$ EL1 |
| EL1 | 중하 | MMU, 인터럽트 컨트롤러 | EL0 및 시스템 자원 일부 | HVC $\rightarrow$ EL2 / SMC $\rightarrow$ EL3 |
| EL2 | 중상 | Stage 2 Page Table, 가상 인터럽트 | EL0, EL1 및 가상화 자원 | SMC $\rightarrow$ EL3 |
| EL3 | 최고 | 보안 설정, 전원 관리, World 전환 | 시스템 전체 자원 (Secure $\leftrightarrow$ Non-secure) | ERET $\rightarrow$ 하위 EL |
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.